home *** CD-ROM | disk | FTP | other *** search
- /***********************************************************/
- /* _ __ __ */
- /* /_//_)/_ ( */
- /* / //( (_/__)|/STEM written by H.Raaf © 1992-93 */
- /* / */
- /* ProDev / X-Pert */
- /* */
- /***********************************************************/
- /* */
- /* Definitions for the HRBitMap V38 */
- /* */
- /***********************************************************/
-
- #ifndef HRG_BITMAP_H
- #define HRG_BITMAP_H
-
- #ifndef EXEC_TYPES_H
- #include <exec/types.h>
- #endif
-
- #ifndef EXEC_SEMAPHORES_H
- #include <exec/semaphores.h>
- #endif
-
-
- /*
- ** Color Look Up Table Definition, wird fuer die GAMMA Korrektur
- ** bei hrWriteRect() und andere Funktionen mit GAMMA Faehigkeit, anstelle
- ** der Stukture HRColorMap() verwendet! Bitte beachten das der Aufbau sich
- ** stark von einer HRColorMap unterscheidet (aus Geschwindikeitsgruenden
- ** ist es guenstiger die RGB(A) Werte nicht als ULONGs sondern in 4
- ** Array's zu haben (Spart viel Rechenzeit pro Pixel). Eine CLUT ist immer
- ** fuer alle 256 Farben pro Farbanteil definiert (siehe HRGRender.library).
- */
-
- struct HRCLUT
- {
- UBYTE R[256];
- UBYTE G[256];
- UBYTE B[256];
- UBYTE A[256];
- };
-
- struct HRBitMap
- {
- union LOCKTYPE
- {
- struct SignalSemaphore BLock; /* Die Signal Semaphore, welche vor Auslager Problemen schuetzt...*/
- struct HRBitMap *LinkBMap;
- } LockType; /* Damit wird die BitMap Struktur (und der durch sie belegte Speicher
- ** vor einer Veraenderung waehrend des Auslagerns geschuetzt.) */
-
- UWORD BytesPerRow; /* Anzahl der Bytes um von einem Pixel, den naechsten Pixel eine Zeile
- ** tiefer zu erreichen (Width aus HRScreen kann kleiner sein!) */
- UWORD Rows; /* Anzahl der Zeilen */
- UWORD BitMapType; /* Art des Hardware-Farbmodus der BitMap */
- UBYTE BitMapFlags; /* Diese Flags geben Auskunft ueber die Art der BitMap */
- UBYTE PixelModulo; /* Bits um von einem Pixel zum naechsten zu gelangen:
- ** (PixelModulo/8) = BytePerPixel in der Zeile (kann Bruchteil sein!)
- ** Breite in Pixel = (BytesPerRow/PixelModulo)*8 (geht immer)
- **
- ** PLANE : 1 (auf planes achten) (Nicht bei Merlin!)
- ** PACKED : 1,2,4,8 (Domino nur 8)
- ** MIXED : 4 (auf Byte Packed BitPlane Data achten,
- ** da dieser Modus ganz SPEZIELL arbeitet)
- ** XGA : 16 (R:5 G:6 B:5) (Nicht bei Domino)
- ** TARGA : 16 (R:5 G:5 B:5)
- ** RGB24 : 24 (R:8 G:8 B:8) (Nicht bei Domino) */
- UBYTE *MemPtr[8]; /* Maximal 8 (Plane) Pointer
- **
- ** PLANE : 0 oder 0-3 : wie Amiga BitPlanes (Nur Domino)
- ** PACKED : 0-7 (Je nach BitsPerPixel / sind aber alle gleich ;)
- ** MIXED : 0-3 (Zeigen jeweils auf x Plane Byte)
- ** XGA : 0 (1 Alpha Channel Daten 8 Bit)
- ** TARGA : 0 (1 Alpha Channel Daten 8 Bit)
- ** RGB24 : 0 (1 Alpha Channel Daten 8 Bit) */
- UBYTE *BaseMem; /* Hier steht die Auslager Adresse fuer den Screen
- ** Wenn diese nicht gesetzt ist, so gilt die BitMap
- ** als nicht verlagerbar und je nach Flags ist sie
- ** im Kartenspeicher oder halt nicht (USE WITH CARE!) */
- ULONG ByteSize; /* Number of Bytes in this BitMap */
- union
- {
- struct HRColorMap *ColorMap; /* Points to hrh->ColorMap in Palette Modi */
- struct HRCLUT *CLUT;
- } ColCLUT;
-
- UBYTE *BankAddress; /* PRIVATE! Adresse des ersten Bytes in der naechsten Bank */
- UBYTE RenderFlags; /* Aus diesen Bits berechnet sich die RenderFunc.. */
- UBYTE Bank; /* PRIVATE! Aktual BANK (Bit 0 for ZorroII 4MB/2 Banking) */
- UWORD BankedLine; /* PRIVATE! Zeile in der gebankt werden muss */
- UWORD BankedByte; /* PRIVATE! Offset des Bytes bei dem gebankt werden muss */
- UWORD WordReserved; /* PRIVATE! */
- };
-
- #define BLock LockType.BLock
- #define LinkBitMap LockType.LinkMap
- #define LinkLock LockType.LinkMap->BLock
-
- /* Definitionen fuer HRBitMap Type */
-
- /* Bits Per Pixel in der BitMap (und Depth bei Planes)
- **
- ** PLANE : 1 und 4 (Nicht bei Merlin!)
- ** PACKED : 1-8 (Domino nur 8)
- ** MIXED : 4 (Byte Packed BitPlane Data)
- ** XGA : 16 (R:5 G:6 B:5) (Nicht bei Domino)
- ** TARGA : 15 (R:5 G:5 B:5)
- ** RGB24 : 24 (R:8 G:8 B:8) (Nicht bei Domino)
- */
-
- #define HRBM_MODEMASK 0xFF00
- #define HRBM_BITMASK 0x00FF
-
- #define HRBM_PLANE 0 /* Nicht bei Merlin */
- #define HRBM_PACKED 1
- #define HRBM_MIXED 2
- #define HRBM_XGA 3 /* Nicht bei Domino */
- #define HRBM_TARGA 4
- #define HRBM_RGB24 5 /* Nicht bei Domino */
- #define HRBM_RGBOVL 6 /* z.Z. nicht implementiert */
-
- #define HRCOL_PLANE4 (HRBM_PLANE<<8|4) /* Nicht bei Merlin */
- #define HRCOL_MIXED4 (HRBM_MIXED<<8|4)
- #define HRCOL_PACKED1 (HRBM_PACKED<<8|1) /* z.Z. nicht implementiert */
- #define HRCOL_PACKED2 (HRBM_PACKED<<8|2) /* z.Z. nicht implementiert */
- #define HRCOL_PACKED4 (HRBM_PACKED<<8|4) /* z.Z. nicht implementiert */
- #define HRCOL_PACKED8 (HRBM_PACKED<<8|8)
- #define HRCOL_TARGA (HRBM_TARGA<<8|15)
- #define HRCOL_XGA (HRBM_XGA<<8|16) /* Nicht bei Domino */
- #define HRCOL_RGB24 (HRBM_RGB24<<8|24) /* Nicht bei Domino */
- #define HRCOL_RGBOVL (HRBM_RGBOVL<<8|32) /* z.Z. nicht implementiert */
-
- /* This Definitions are not fully Clear... but nice ;) */
-
- #define HRCOL_16Col HRCOL_PLANE4 /* Obsolete */
- #define HRCOL_256Col HRCOL_PACKED8 /* Obsolete */
- #define HRCOL_HiCol HRCOL_TARGA /* Obsolete */
-
-
- /* This Definitions for advanced BitMap prozessing */
-
- #define HRBRF_ALL 0xFF
- #define HRBRB_DITHER 0 /* Dither Modus aktive, wird nur bei TARGA, XGA
- ** und PACKED8 unterstuetzt. */
-
- #define HRBRB_USERGBA 1 /* Wenn dieses Flags gesetzt ist, wird bei PACKED8
- ** ein Farbwert fuer die HRGRenderLibrary als 24 Bit
- ** Wert interpretiert
- ** Bei den Funktionen, welche RGBA DATEN erwarten,
- ** bewirkt dieses Flag, das die SOURCE Daten als
- ** RGBA (ULONG) Daten erwartet werden (spez. fuer
- ** hrWriteRect() einzusetzten (HRBRB_QUICKRGBA) */
-
- #define HRBRB_USECLUT 2 /* Wenn dieses Flags gesetzt ist, wird bei Palettenlosen
- ** Modi der Eintrag aus hrbm->CLUT bzw. hrbm->ColorMap
- ** als Pseudo-Palette benutzt (HRBRB_USECMAP).
- ** Bei Funktionen, welche RGBA DATEN erwarten, wird
- ** bei gesetztem Flags eine ColorLookUp Table (z.B.
- ** fuer GAMMA Korrektur) benutzt */
-
- #define HRBRB_BANKED 3 /* Flag, welches gebankte BitMaps kennzeichnet !! */
-
- #define HRBRF_DITHER (1<<HRBRB_DITHER)
- #define HRBRF_USERGBA (1<<HRBRB_USERGBA)
- #define HRBRF_USECLUT (1<<HRBRB_USECLUT)
- #define HRBRF_BANKED (1<<HRBRB_BANKED)
-
- /* Defines fuer doppelt benutzte Flags */
-
- #define HRBRB_QUICKRGBA HRBRB_USERGBA
- #define HRBRF_QUICKRGBA HRBRF_USERGBA
- #define HRBRB_USECMAP HRBRB_USECLUT
- #define HRBRF_USECMAP HRBRF_USECLUT
-
- /* Definitionen fuer HRBitMap : Flags */
-
- #define HRBFF_ALL 0xFF
- #define HRBFB_LINKMAP 0 /* Diese BitMap ist an eine andere BitMap gelinked */
- /* Bei solchen BitMaps ist der BLock keine Signal-Semaphore,
- ** sondern ein Zeiger auf die "Grund" BitMap. */
- #define HRBFB_BLITABLE 1 /* Bitmap ist BLITBAR */
- #define HRBFB_ACCABLE 2 /* Bitmap kann Hardware-Masken benutzen */
- #define HRBFB_FAKEMAP 3 /* Bitmap ist NIEMALS SICHTBAR */
-
- #define HRBFF_LINKMAP (1<<HRBFB_LINKMAP)
- #define HRBFF_BLITABLE (1<<HRBFB_BLITABLE)
- #define HRBFF_ACCABLE (1<<HRBFB_ACCABLE)
- #define HRBFF_FAKEMAP (1<<HRBFB_FAKEMAP)
- #endif
-
-